-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Program clarifications #342
base: master
Are you sure you want to change the base?
Conversation
Clarify use of build and run scripts Harmonize working directory requirements
…rmat.git into programs-clarifications-2
Co-authored-by: Fredrik Niemelä <[email protected]>
Yes, I agree the line does not actually specify anything. However (see also the discussion at #330) in practice people will want to link against additional libraries in their |
…/problem-package-format/ into programs-clarifications-2
I've removed this clause. (But is there any case where there are some dynamic libraries, or other files produced during compilation other than the submitted files and the compiled binary, that need to be in the folder?) |
I would argue that that discussion actually implies the opposite (and I would definitely argue for the opposite). I.e. if you want an additional library it should be included in the package (which kinda implies that "Contest systems may not provide additional libraries or tools", although it's strange to say that you can't provide additional things, when you have not exactly specified what should be provided). |
There is some elegance to that approach, but as a practical matter do you really want individual forks of Eigen, matplotlib, libpng, etc. (and all dependencies they recursive pull in) across some fraction of your problem packages? |
Short answer: yes. Long answer: I see three possible approaches:
I think 3 is best, but needs to be done well, and that's hard. 1 is worst; it's fine for single contests, but terrible for reuse and archives (i.e. "distributing and sharing problems" which is the stated purpose of the format). 2 is pretty much as good as 1 for single contests, and based on what has been used so far wouldn't be too bad for large archives either. Also, large archvie could use caching to make it better if it turns out to be bad (although, not quite as easily as with 3). So, 2 is a lot easier than 3, and almost as good. |
But Option 2 also places more burden on the package writers. "this is still fairly simple": only for header-only libraries like Eigen, though? And from a quick look at We rejected including even just a language version string for the package programs, under the argument that (1) it's too onerous on the package authors and (2) "surely" it won't be too difficult for an archivist in 20 years to figure out how to build the problem package. This dependency-bundling seems a lot more effort (albeit, only for problem packages that need libraries for visualizers etc. which are a minority). I haven't needed external libraries for problems I've written (except maybe in generators, which are outside the scope of the spec) so I don't have much of a dog in this race---I'm fine with requiring all dependencies to be bundled, if this sounds reasonable to @eldering and others in the linked issue. Though I'm skeptical authors will obey such requirements in practice. |
Clarify program requirements; addresses #330 and #341